/**
 * 千分化金额
 * @param number 金额值
 * @returns
 */
export const formatMoneyThoud = (number: number) => {
  let isNegative = false
  let n = number
  if (number < 0) {
    isNegative = true
    n = Math.abs(number)
  }

  let r = ''
  let temp = null
  do {
    // 求模的值， 用于获取高三位，这里可能有小数
    const mod = n % 1000
    // 值是不是大于1，是继续的条件
    n = n / 1000
    // 高三位
    temp = ~~mod
    // 1.填充: n > 1 循环未结束， 就要填充为比如 1 => 001
    // 不然temp = ~~mod的时候, 1 001， 就会变成 "11"
    // 2.拼接“,”
    r = (n >= 1 ? `${temp}`.padStart(3, '0') : temp) + (r ? `,${r}` : '')
  } while (n >= 1)
  const strNumber = `${number}`
  const index = strNumber.indexOf('.')
  // 拼接小数部分
  if (index >= 0) {
    r += strNumber.substring(index)
  }

  if (isNegative) r = `-${r}`
  return r
}

/**
 * 金额包含指定小数位，默认两位
 * @param number
 */
export const fillMoneyWithFixed = (number: number, fixed = 2) => {
  if (isNaN(number * 1)) return 0
  const value: any = (number * 1).toFixed(fixed)

  return formatMoneyThoud(value)
}
